/**
 * S1生理数据分析工具 - 统一菜单配置
 * 用于管理所有页面的导航菜单和标题栏配置
 */

// 应用配置
const APP_CONFIG = {
    title: 'S1生理数据分析工具',
    version: '1.0.0',
    description: '专业的生理信号数据解析与分析平台'
};

// 菜单项配置
const MENU_ITEMS = [
    {
        id: 'home',
        name: '首页',
        icon: '🏠',
        path: '/',
        description: '功能介绍和系统概览'
    },
    {
        id: 'data-analysis',
        name: '数据解析',
        icon: '📁',
        path: '/pages/data-parse.html',
        description: '上传和解析S1手环数据文件'
    },
    {
        id: 'ppg',
        name: 'PPG分析',
        icon: '📊',
        path: '/pages/ppg-analysis.html',
        description: '心率变异性和血氧饱和度分析'
    },
    {
        id: 'eda',
        name: 'EDA分析',
        icon: '📈',
        path: '/pages/eda-analysis.html',
        description: '皮肤电导活动和情绪状态分析'
    },
    {
        id: 'divider',
        type: 'divider'
    },
    {
        id: 'help',
        name: '使用帮助',
        icon: '❓',
        action: 'showHelp',
        description: '查看系统使用说明'
    },
    {
        id: 'about',
        name: '关于系统',
        icon: 'ℹ️',
        action: 'showAbout',
        description: '查看系统版本和信息'
    }
];

// 页面配置映射
const PAGE_CONFIG = {
    'index.html': {
        title: '首页',
        description: '功能介绍和系统概览',
        activeMenu: 'home',
        breadcrumb: [
            { name: '首页', path: 'index.html' }
        ]
    },
    'data-parse.html': {
        title: '数据解析',
        description: '上传和解析S1手环数据文件',
        activeMenu: 'data-analysis',
        breadcrumb: [
            { name: '首页', path: '../index.html' },
            { name: '数据解析', path: null }
        ]
    },
    'ppg-analysis.html': {
        title: 'PPG指标解析',
        description: '心率变异性分析与心血管健康评估',
        activeMenu: 'ppg',
        breadcrumb: [
            { name: '首页', path: '../index.html' },
            { name: 'PPG指标解析', path: null }
        ]
    },
    'eda-analysis.html': {
        title: 'EDA指标解析',
        description: '皮肤电导活动分析与情绪状态评估',
        activeMenu: 'eda',
        breadcrumb: [
            { name: '首页', path: '../index.html' },
            { name: 'EDA指标解析', path: null }
        ]
    }
};

/**
 * 获取当前页面配置
 * @param {string} pageName - 页面文件名
 * @returns {object} 页面配置对象
 */
function getCurrentPageConfig(pageName) {
    return PAGE_CONFIG[pageName] || PAGE_CONFIG['index.html'];
}

/**
 * 生成主页菜单HTML（用于主页）
 * @param {string} currentPage - 当前页面标识
 * @param {string} basePath - 基础路径（用于调整相对路径）
 * @returns {string} 菜单HTML字符串
 */
function generateMenuHTML(currentPage, basePath = '') {
    return MENU_ITEMS.map(item => {
        // 处理分隔线
        if (item.type === 'divider') {
            return '<div style="height: 1px; background: var(--border-color); margin: var(--spacing-md) var(--spacing-lg);"></div>';
        }
        
        const isActive = item.id === currentPage;
        
        // 处理有action的菜单项（如帮助、关于）
        if (item.action) {
            return `
                <button class="menu-item ${isActive ? 'active' : ''}" onclick="${item.action}()" title="${item.description}">
                    <span class="menu-icon">${item.icon}</span>
                    <span class="menu-text">${item.name}</span>
                </button>
            `;
        }
        
        // 处理普通导航菜单项
        const path = item.path;
        return `
            <button class="menu-item ${isActive ? 'active' : ''}" onclick="window.location.href='${path}'" title="${item.description}">
                <span class="menu-icon">${item.icon}</span>
                <span class="menu-text">${item.name}</span>
            </button>
        `;
    }).join('');
}

/**
 * 生成导航菜单HTML
 * @param {string} activeMenuId - 当前激活的菜单ID
 * @returns {string} 导航菜单HTML
 */
function generateNavMenuHTML(activeMenuId) {
    return MENU_ITEMS.map(item => {
        // 处理分隔线
        if (item.type === 'divider') {
            return '<li style="height: 1px; background: var(--border-color); margin: var(--spacing-md) var(--spacing-lg); list-style: none;"></li>';
        }
        
        const isActive = item.id === activeMenuId;
        const activeClass = isActive ? ' active' : '';
        
        // 处理有action的菜单项（如帮助、关于）
        if (item.action) {
            return `
                <li class="nav-item">
                    <button class="nav-link${activeClass}" onclick="${item.action}()" title="${item.description}" style="border: none; background: none; width: 100%; text-align: left; cursor: pointer;">
                        <span class="nav-icon">${item.icon}</span>
                        <span class="nav-text">${item.name}</span>
                    </button>
                </li>
            `;
        }
        
        // 处理普通导航菜单项
        return `
            <li class="nav-item">
                <a href="${item.path}" class="nav-link${activeClass}">
                    <span class="nav-icon">${item.icon}</span>
                    <span class="nav-text">${item.name}</span>
                </a>
            </li>
        `;
    }).join('');
}

/**
 * 生成面包屑导航HTML
 * @param {array} breadcrumb - 面包屑数组
 * @returns {string} 面包屑HTML字符串
 */
function generateBreadcrumbHTML(breadcrumb) {
    return breadcrumb.map(item => {
        if (item.path) {
            return `<el-breadcrumb-item><a href="${item.path}">${item.name}</a></el-breadcrumb-item>`;
        } else {
            return `<el-breadcrumb-item>${item.name}</el-breadcrumb-item>`;
        }
    }).join('');
}

/**
 * 初始化页面菜单和标题
 * @param {string} pageName - 页面文件名
 * @param {string} basePath - 基础路径
 */
function initializePageMenu(pageName, basePath = '') {
    const config = getCurrentPageConfig(pageName);
    
    // 更新页面标题
    document.title = `${config.title} - ${APP_CONFIG.title}`;
    
    // 更新标题栏
    const headerTitle = document.querySelector('.header-title');
    if (headerTitle) {
        headerTitle.textContent = APP_CONFIG.title;
    }
    
    // 只更新菜单，不更新页面标题、描述和面包屑（避免与HTML硬编码冲突）
    const navMenu = document.querySelector('.nav-menu');
    if (navMenu) {
        navMenu.innerHTML = generateNavMenuHTML(config.activeMenu);
    }
    
    // 添加全局帮助和关于功能
    addGlobalFunctions();
}

/**
 * 添加全局功能函数
 */
function addGlobalFunctions() {
    // 确保全局函数只添加一次
    if (window.showHelp && window.showAbout) {
        return;
    }
    
    window.showHelp = function() {
        if (typeof ElMessageBox !== 'undefined') {
            ElMessageBox.alert(
                '1. 数据解析：上传S1手环原始数据文件进行解析\n2. PPG分析：对光电容积脉搏波信号进行深度分析\n3. EDA分析：对皮肤电导信号进行情绪状态评估\n4. 支持批量处理和多格式输出',
                '使用帮助',
                { confirmButtonText: '知道了' }
            );
        } else {
            alert('使用帮助：\n1. 数据解析：上传S1手环原始数据文件进行解析\n2. PPG分析：对光电容积脉搏波信号进行深度分析\n3. EDA分析：对皮肤电导信号进行情绪状态评估\n4. 支持批量处理和多格式输出');
        }
    };
    
    window.showAbout = function() {
        if (typeof ElMessageBox !== 'undefined') {
            ElMessageBox.alert(
                'S1生理数据分析工具 v2.0\n\n专业的生理信号数据处理平台，支持EDA和PPG数据的批量解析与分析。\n\n主要功能：\n• 原始数据解析\n• PPG心率变异性分析\n• EDA情绪状态评估\n• 批量处理与可视化',
                '关于系统',
                { confirmButtonText: '确定' }
            );
        } else {
            alert('关于系统：\nS1生理数据分析工具 v2.0\n\n专业的生理信号数据处理平台，支持EDA和PPG数据的批量解析与分析。\n\n主要功能：\n• 原始数据解析\n• PPG心率变异性分析\n• EDA情绪状态评估\n• 批量处理与可视化');
        }
    };
}

/**
 * 获取相对路径调整
 * @param {string} currentPath - 当前页面路径
 * @returns {string} 基础路径
 */
function getBasePath(currentPath) {
    if (currentPath.includes('/pages/')) {
        return '..';
    }
    return '';
}

// 导出配置和函数
if (typeof module !== 'undefined' && module.exports) {
    // Node.js 环境
    module.exports = {
        APP_CONFIG,
        MENU_ITEMS,
        PAGE_CONFIG,
        getCurrentPageConfig,
        generateMenuHTML,
        generateNavMenuHTML,
        generateBreadcrumbHTML,
        initializePageMenu,
        getBasePath
    };
} else {
    // 浏览器环境
    window.MenuConfig = {
        APP_CONFIG,
        MENU_ITEMS,
        PAGE_CONFIG,
        getCurrentPageConfig,
        generateMenuHTML,
        generateNavMenuHTML,
        generateBreadcrumbHTML,
        initializePageMenu,
        getBasePath
    };
}